package com.devmindset.legoframework.usage.client.service;

import java.util.List;

import com.devmindset.legoframework.usage.client.model.CalEvent;
import com.devmindset.legoframework.usage.client.model.Country;
import com.devmindset.legoframework.usage.client.model.OrderItem;
import com.google.gwt.user.client.rpc.AsyncCallback;

/**
 * Asynchronous counterpart of {@link UsageServiceInterface}.
 * 
 * @author <a href="ice.penov@devmindset.com">Ice Penov</a>
 */
public interface UsageServiceInterfaceAsync {
	
	/**
	 * Test and monitoring service.
	 * <br/><br/>
	 * 
	 * Returns the "OK" message in a callback format
	 */	
	void ping(AsyncCallback<String> callback);
	
	/**
	 * Gets the list of order items via the callback.
	*/
	void getOrderItems(AsyncCallback<List<OrderItem>> callback);
	
	/**
	 * Gets the list of messages via the callback.
	 */
	void getCountries(AsyncCallback<List<Country>> callback);
	
	/**
	 * Gets the list of calendar events via the callback.
	 */
	void getCalendarEvents(AsyncCallback<List<CalEvent>> events); 
	
}
